# encoding: utf-8

# pyecharts.charts是一个专门的工具,我们给数据，他会给图，而我们不必需要知道数据是怎么变成图的，只要数据符合要求即可
import datetime

from pyecharts.charts import Line
import fileAction


# 根据fundCode基金代码获取保存在txt里的数据
def createDataImage(fundCode):
    # 获取今天的日期后面有用
    nowDay = datetime.datetime.now().strftime('%Y-%m-%d')
    # 获取该基金代码下对应的今天的TXT数据
    data = fileAction.readTxt(fundCode)
    # 把数据split分隔开每一行数据为一组
    # 每一行数据长这样:gsz,-1.06;gztime,2020-03-26 14:49(这里的,和;很重要)
    lines = data.split("\n")

    # x轴数组
    x = []
    # y轴数组
    y = []

    # 循环lines整租数据,line代表这组数据的其中一个，从头到尾
    for line in lines:
        # 如果这行数据不是空的
        if line != '':
            # 把这数据依照;分割成两组,参照上面的数据结构  gsz,-1.06               gztime,2020-03-26 14:49
            tem = line.split(";")
            # 取这组数据的第二个gztime,2020-03-26 14:49并且按照,分割成gztime          2020-03-26 14:49
            # 然后也去第二个数据2020-03-26 14:49把时间nowDay也就是2020-03-26替换成空
            # xData 就变成14:49
            xData = tem[1].split(",")[1].replace(nowDay + " ", "")
            # 如果x轴已经有数据了
            if len(x) > 0:
                # 判断x轴的最后一个数据 是不是14:49
                if x[len(x)-1] != xData:
                    # 如果不是的话，把时间放入x轴
                    x.append(xData)
                    # 把幅度gsz,-1.06 按照,分隔取第二个也就是-1.06放在y轴
                    y.append(tem[0].split(",")[1])
            # 如果x轴没有数据,直接把数据放进去不用判断最后一个因为没有
            else:
                x.append(xData)
                y.append(tem[0].split(",")[1])
            # 然后继续下一行
    # 这时候x,y轴都有数据了，这批数据叫做   fundCode + '折线图'
    # 给createImage方法
    createImage(x, y, fundCode + '折线图')


# 以下实现是规定，不必了解，通过预设的代码把数据传进去，就有图表了
def createImage(x, y, dataName):
    line = (
        Line()
            .add_xaxis(x)
            .add_yaxis(dataName, y)
    )
    line.render()
